1
Concurrencia no Planeta Vermelho
AI017Lesson 8
00:00

Concurrencia no Planeta Vermelho é a arte de gerenciar múltiplas operações independentes — como navegação de rover, telemetria de sinais vitais e conexões com satélites — sem que o sistema pare. Em Go, uma tarefa executada de forma independente é conhecida como um goroutine.

1. O Princípio da Não Determinação

É melhor sempre assumir que as operações em diferentes goroutines podem ser executadas em qualquer ordem. Como o tempo de execução do Go agenda tarefas em núcleos disponíveis, não podemos confiar em um rover terminar sua varredura antes que outro comece sua transmissão sem sincronização explícita.

go printGopher(c) // Inicia uma nova tarefa independente

2. Mecanismos de Sincronização

Para gerenciar essas tarefas, o Go fornece duas ferramentas principais:

  • Exclusão Mútua: As goroutines podem usar um mutex para excluir mutuamente a realização de alguma coisa ao mesmo tempo.
  • A Declaração Select: Esta parece uma instrução switch onde cada caso contém uma recepção ou envio de canal. select espera até que um caso esteja pronto e depois o executa.
Gerente de Gopher(Capacete e Bloco de Notas)SELECIONARRover AlfaRover Beta

3. O Esqueleto do Trabalhador

Trabalhadores de longa duração normalmente utilizam um loop infinito combinado com select para monitorar múltiplos canais de comunicação simultaneamente:

func worker() {
for {
select {
// Espere pelos canais aqui.
}
}
}
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>